CloudWatch メトリクスに目的のメトリクスが記録されていないのは何故か教えてください
困っていた内容
ALB を作成しました。
バックエンドインスタンスから送信される HTTP 4XX エラーコードの数を確認するため、HTTPCode_Target_4XX_Count メトリクスを確認しましたが、値が記録されておりません。
記録が全くないのか、それとも何か異常が発生しているのかの判断ができず、困っています。
どう対応すればいいの?
CloudWatch メトリクスにはレポート条件という概念があります。
例えば、HTTPCode_Target_4XX_Count メトリクスのレポート条件は「ゼロ以外の値がある」です。
この場合、バックエンドインスタンスから送信される HTTP 4XX エラーコードの数が 0 の場合は、CloudWatch メトリクスに記録されません。
レポート条件を考慮の上、どのような状況が発生しているかの判断を行ってください。
CloudWatch アラームで値が記録されない場合はアラーム状態にしたくない場合
CloudWatch アラームではメンテナンスが記録されていない場合について、どのように処理するかを設定できます。
Amazon CloudWatch でのアラームの使用 - Amazon CloudWatch
アラームごとに、CloudWatch が欠落データポイントを次のいずれかとして処理するように指定できます。
notBreaching – 欠落データポイントは「良好」かつしきい値内として扱われます。
breaching – 欠落データポイントは「不良」とされ、しきい値超過として扱われます。
ignore – 現在のアラーム状態が維持されます。
missing – アラーム評価範囲内のすべてのデータポイントがない場合、アラームは INSUFFICIENT_DATA に移行します。
最適な選択は、メトリクスの種類によって異なります。インスタンスの CPUUtilization など、継続的にデータを報告するメトリクスの場合、欠落データポイントは問題の発生を示している可能性があるため、breaching として処理します。ただし、Amazon DynamoDB の ThrottledRequests など、エラー発生時のみデータポイントを生成するメトリクスの場合は、notBreaching として欠落データを処理します。デフォルトの動作は missing です。
レポート条件が「ゼロ以外の値がある」であるメトリクスに対してアラームを設定する場合は、欠落データポイントの扱いをnotBreachingと設定することが望ましいです。
参考資料
Application Load Balancer の CloudWatch メトリクス - Elastic Load Balancing